BibliotecaAuxiliarScript.execute('framework.src.file.DAO');
BibliotecaAuxiliarScript.execute('framework.src.util.lua.BibliotecaAuxiliarEntradaSaida');
BibliotecaAuxiliarScript.execute('lib.xml.etree');

DAO_XML = DAO.new();

function DAO_XML:getDados(st_arquivo)
	local xml_string = BibliotecaAuxiliarEntradaSaida.getXML(st_arquivo);
	local retorno = {};
	local xml_tabela = etree.fromstring(xml_string);
	
	if(xml_tabela ~= nil)then
		retorno = DAO_XML:formatarXML(xml_tabela);
	end
	
	return retorno;
end

function DAO_XML:getElemento(tabela)
	local elemento = {}

	for i,v in ipairs(tabela) do
		if(v.tag ~= nil and type(v[1]) ~= "table") then
			local elemento_add = BibliotecaAuxiliarTexto.tokenize(v[1],',');
			if(#elemento_add == 1) then
				elemento_add = elemento_add[1];
			end
			elemento[v.tag] = elemento_add;
		elseif(type(v[1]) == "table") then
			if(elemento[v.tag] == nil)then
				elemento[v.tag] = {};
			end
			local elemento_tabela = DAO_XML:getElemento(v);
			elemento_tabela.id = v.attr.id;
			table.insert(elemento[v.tag],tonumber(v.attr.id),elemento_tabela);
		end
	end
	return elemento;
end

function DAO_XML:formatarXML(tabela)
	local retorno = {};
	
	for i,v in ipairs(tabela) do
		local elemento = DAO_XML:getElemento(v);
		elemento.id = v.attr.id;
		table.insert(retorno,tonumber(v.attr.id),elemento);
	end

	return retorno;
end

